package com.mimiwang.article.util;

import java.util.ArrayList;
import java.util.List;

public class ObjectToList {

    public static void main(String[] args) {
        Object obj = new Object();
        // 这里模拟对解析出来的对象进行转换成List<String>
        List<Long> longs = castList(obj, Long.class);
    }


    /*将object转换为T类型的List*/
    public static <T> List<T> castList(Object obj, Class<T> clazz) {
        List<T> result = new ArrayList<>();
        // 如果不是List<?>对象，是没有办法转换的
        if (obj instanceof List<?>) {
            for (Object o : (List<?>) obj) {
                // 根据业务需要来决定这里要不要将null值还原放进去
                if (o == null) {
                    result.add(clazz.cast(null));
                    continue;
                }
                // 转换前的前置判断，避免clazz.cast的时候出现类转换异常
                if (o.getClass().equals(clazz)) {
                    // 将对应的元素进行类型转换
                    result.add(clazz.cast(o));
                }
            }
            return result;
        }
        return result;
    }

}